package org.jeecg.modules.flowable.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.modules.flowable.service.bo.Attr;
import org.jeecg.modules.flowable.service.bo.taskdetail.TaskBrowseDetailFormData;
import org.jeecg.modules.flowable.service.bo.taskdetail.TaskDetail;
import org.jeecg.modules.flowable.system.service.uplode.bo.WebFsDataResult;

import java.util.List;
import java.util.Map;

/**
 * Title:  <br>
 * Desc:  <br>
 * Date: 6/17/22 5:48 PM <br>
 * Company: 联通（辽宁）产业互联网有限公司 <br>
 *
 * @author zxd
 * @version 1.0.0
 */
public interface FlowProcService {
    /**
     * 查询待办任务
     * @param argUserId
     * @return
     */
    public List<Map<String,Object>> queryMyTodo(String argUserId);

    /**
     * 分页查询待办任务
     * @param argUserId
     * @param argCurrPage
     * @param argPageSize
     * @return
     */
    public Page<Map<String,Object>> queryMyTodoByPage(String argUserId, Integer argCurrPage, Integer argPageSize);

    /**
     * 我发起的流程
     * @param argUserId
     * @param argCurrPage
     * @param argPageSize
     * @return
     */
    public Page<Map<String,Object>> queryMyFlow(String argUserId, Integer argCurrPage, Integer argPageSize);

    /**
     * 我发起的流程
     * @param argUserId
     * @param argCurrPage
     * @param argPageSize
     * @return
     */
    public Page<Map<String,Object>> queryMyProc(String argUserId, Integer argCurrPage, Integer argPageSize);

    /**
     * 查询我的草稿
     * @param argUserId
     * @param argCurrPage
     * @param argPageSize
     * @return
     */
    public Page<Map<String,Object>> queryMyDraft(String argUserId, Integer argCurrPage, Integer argPageSize);


    /**
     * 任务详情信息
     * @param argMatterInstId 事项实例ID
     * @param argTaskId 任务实例ID(引擎中的任务ID)
     * @param isTaskDetailAttr 任务详情中附件数据是否直接返回，true为直接返回，false本接口不返回，但可以通过 queryTaskFormData进行二次查询返回
     * @param isTaskDetailBackHis 任务详情是否追述历史数据，在流程退回给发起者后重新提交流程的情况下，true为追述历史任务详情数据，false为不追述历史任务详情数据
     * @return
     */
    public TaskDetail queryTaskDetail(String argMatterInstId,String argTaskId,Boolean isTaskDetailAttr,Boolean isTaskDetailBackHis);

    /**
     * 查询任务过程中自定义表单和附件数据
     * @param argActRuActinstId
     * @return
     */
    public TaskBrowseDetailFormData queryTaskFormData(String argActRuActinstId);

    /**
     * 查询任务过程中附件数据
     * @param argActRuActinstId
     * @return
     */
    public List<WebFsDataResult> queryTaskAttachmentList(String argActRuActinstId);

    /**
     * 保存
     * @param argMatterInstId
     * @param argTaskId
     * @param argAttType
     * @param argAttDesc
     * @param argFormData
     * @param argAttrList
     * @param argActionFunname
     * @param argActionFuncode
     */
    public void save(String argMatterInstId, String argTaskId, Integer argAttType, String argAttDesc, Map<String,Object> argFormData, List<Attr> argAttrList,String argActionFunname,String argActionFuncode,String formContent);

}